/**
//编写一种算法，若M × N矩阵中某个元素为0，则将其所在的行与列清零。 
//
// 
//
// 示例 1： 
//
// 输入：
//[
//  [1,1,1],
//  [1,0,1],
//  [1,1,1]
//]
//输出：
//[
//  [1,0,1],
//  [0,0,0],
//  [1,0,1]
//]
// 
//
// 示例 2： 
//
// 输入：
//[
//  [0,1,2,0],
//  [3,4,5,2],
//  [1,3,1,5]
//]
//输出：
//[
//  [0,0,0,0],
//  [0,4,5,0],
//  [0,3,1,0]
//]
// 
// Related Topics 数组 哈希表 矩阵 👍 62 👎 0

*/

package com.xixi.medium;
public class ID_interview_01_08_ZeroMatrixLcci {
public static void main(String[] args) {
Solution solution = new ID_interview_01_08_ZeroMatrixLcci().new Solution();
}


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public void setZeroes(int[][] matrix) {

        int[] m = new int[matrix.length]; //标记行
        int[] n = new int[matrix[0].length]; //标记列

        for(int i = 0; i < matrix.length; i++){
            for(int j = 0; j < matrix[i].length;j++){
                if(matrix[i][j] == 0){
                    mark(m,n,i,j);
                }
            }
        }

        //转变0

        //行转变
        for(int i = 0; i < m.length; i++){
            if(m[i] == 1){
                for(int j = 0; j < matrix[i].length; j++){
                    matrix[i][j] = 0;
                }
            }

        }

        //列转变
        for(int j = 0; j < n.length; j++){
            if(n[j] == 1){
                for(int i = 0; i < matrix.length; i++){
                    matrix[i][j] = 0;
                }
            }

        }

    }

    public void mark(int[] m, int[]n, int i, int j){
        m[i] = 1; //标记行，首列元素标0
        n[j] = 1; //标记列，首行元素标记0
    }
}
//leetcode submit region end(Prohibit modification and deletion)




}